/*
 * IndiceDatos.h
 *
 *  Created on: May 20, 2012
 *      Author: lucasj
 */

// Indice Datos:
// Contiene los datos leidos del archivo datos. Se
// guardan de la forma: cod y un string con la línea
// del archivo.

#ifndef INDICEDATOS_H_
#define INDICEDATOS_H_

#include "IndiceDimensiones.h"


typedef std::map<int, std::string>::iterator iteratorDatos;
typedef std::list<int>::iterator iteratorListaResultado;

namespace DataIndex {

class IndiceDatos {
private:
	DimensionIndex::IndiceDimensiones dimensionIndex;
	std::map<int, std::string> map;
	void LlenarResultado(std::string& valor,
			ResultIndex::IndiceResultado& resultIndex, int &cantValores);
	void obtenerSiguientePosicion(unsigned int
					    &posAnterior, unsigned int &posActual, std::string &linea);
	void ImprimirResultados(std::list<int> &listaResultados, std::ostringstream &res);

public:
	IndiceDatos(Validador& validator);
	virtual ~IndiceDatos();
	void SetElem(std::string &linea, int cod);
	void Consultar(std::string &valor, std::ostringstream &res);
	friend std::ostringstream& operator<<(std::ostringstream& oss,
					  IndiceDatos &indice);
};
std::ostringstream& operator<<(std::ostringstream& oss, IndiceDatos &indice);
}
#endif
